package response

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// Response 定义统一响应结构体
// @Description 统一的响应格式
type Response struct {
	Code    int         `json:"code" example:"200"`        // 响应状态码
	Message string      `json:"message" example:"操作成功"`    // 响应信息
	Data    interface{} `json:"data" swaggertype:"object"` // 响应数据
}

// 成功响应
func Success(c *gin.Context, data interface{}, message string) {
	c.JSON(http.StatusOK, Response{
		Code:    http.StatusOK,
		Message: message,
		Data:    data,
	})
}

// 错误响应
func Error(c *gin.Context, statusCode int, message string) {
	c.JSON(statusCode, Response{
		Code:    statusCode,
		Message: message,
		Data:    nil,
	})
}

// 参数错误
func BadRequest(c *gin.Context, message string) {
	Error(c, http.StatusBadRequest, message)
}

// 未授权
func Unauthorized(c *gin.Context, message string) {
	Error(c, http.StatusUnauthorized, message)
}

// 服务器错误
func InternalServerError(c *gin.Context, message string) {
	Error(c, http.StatusInternalServerError, message)
}
